package cn.com.gridinfo.sooc;

import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;

import com.jeremy.arad.Arad;
import com.jeremy.arad.utils.Log;

import net.youmi.android.AdManager;

import org.apache.http.message.BasicNameValuePair;

import butterknife.ButterKnife;
import butterknife.InjectView;
import cn.com.gridinfo.ads.AppConnect;
import cn.com.gridinfo.sooc.base.BaseSoocActivity;
import cn.com.gridinfo.sooc.common.Const;
import cn.com.gridinfo.sooc.common.LocalMark;
import cn.com.gridinfo.sooc.common.PublicConst;
import cn.com.gridinfo.sooc.core.home.activity.AdsActivity;
import cn.com.gridinfo.sooc.core.home.activity.HomeActivity;
import cn.com.gridinfo.sooc.core.home.activity.LeadingActivity;
import cn.com.gridinfo.sooc.core.login.activity.LoginActivity;
import cn.com.gridinfo.sooc.core.login.bean.UserInfo;
import cn.com.gridinfo.sooc.core.login.common.CodeConst;
import cn.com.gridinfo.sooc.core.login.common.UserPreference;
import cn.com.gridinfo.sooc.core.login.dao.LoginDao;
import cn.com.gridinfo.sooc.utils.GetChannel;
import cn.com.gridinfo.sooc.utils.IntentUtil;
import cn.com.gridinfo.sooc.utils.MessageUtils;
import cn.com.gridinfo.sooc.utils.widget.ShimmerFrameLayout;
import cn.jpush.android.api.JPushInterface;

/**
 * 启动页
 *
 * @author jieli
 */
public class LoadingActivity extends BaseSoocActivity {
    @InjectView(R.id.loading_shimmer)
    ShimmerFrameLayout loadingShimmer; //加载条
    //启动页
    private Handler mHandler = new Handler();

    LoginDao loginDao;//登录DAO
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (!isTaskRoot()) {
            finish();
            return;
        }
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        View view = View.inflate(this, R.layout.activity_loading, null);
        setContentView(view);
        ButterKnife.inject(this);
        loginDao = new LoginDao(this);

        //加载动画
        loadingShimmer.startShimmerAnimation();

        Log.i("SOOC 瘦课应用启动");

        /**
         * TODO 判断应用是否首发
         *
         */
        if (PublicConst.IS_FIRST_PUBLISH) {
            Log.i("SOOC 瘦课应用是首发");
        }

        //获取渠道号
        String way = GetChannel.getChannelNo(this);


        /**
         * 初始化广告 万普/有米/多盟
         */

        //初始化万普的广告墙，1.5秒打开主页
        AppConnect.getInstance(Const.wp_ads_key, way, this);

        //初始化有米
        // 初始化接口，应用启动的时候调用，参数：appId, appSecret
        AdManager.getInstance(this).init(Const.ym_ads_key, Const.ym_ads_secretkey, false,true);


        //加载启动页
        Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);
        view.startAnimation(animation);
        animation.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation arg0) {
            }

            @Override
            public void onAnimationRepeat(Animation arg0) {
            }

            @Override
            public void onAnimationEnd(Animation arg0) {
                mHandler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        goToLogin();
                    }
                }, 3000);
            }
        });

    }


    /**
     * 启动页 之后跳转广告页面或者体验界面(第一次加载应用)
     */
    private void goToLogin() {
        //获取应用是不是第一次体验app
        boolean isFistApp = Arad.preferences.getBoolean(LocalMark.IS_FIRST_APP.getName(), true);
        //首次体验应用 跳转引导页
        if (isFistApp) {
            IntentUtil.intentSlidIn(this, LeadingActivity.class, 00);
            noAnimfinish();
        }
        //进行自动登录
        else {
            //直接登录
//            判断是否登录成功过,进行自动登录
            if(Arad.preferences.getBoolean(LocalMark.IS_AUTO_LOGIN.getName(),false)){
                //登录
                loginDao.loginUser(Arad.preferences.getString(LocalMark.USER_ACCOUNT.getName()), Arad.preferences.getString(LocalMark.USER_PWD.getName()));
            }else{
                //跳转到下一页面
               toLoginPage();
            }
//
        }

    }


    /**
     * 请求成功
     */
    @Override
    public void onRequestSuccess(int requestCode) {
        try {
            switch (requestCode) {

                case CodeConst.LOGIN_VALIDATE_LOGIN://登录
                    //登录失败，将用户本地的数据清空
                    if (!loginDao.status.equals("0")) {
                        MessageUtils.showImageShortToast(this, loginDao.statusCode);
//                        Arad.preferences.clear();
//                        Arad.preferences.flush();
                        goToNextActivity("toLogin");
                    }
                    //登录成功
                    else {
                        //登录信息存入本地
                        setUserPreference(loginDao.getUserInfo());

                        //获取用户权限  是否游客身份 积分墙是否显示 广告是否显示 1 是 0 否
                        loginDao.getPermision(GetChannel.getChannelNo(this));//输入渠道号
                    }
                    break;

                case CodeConst.LOGIN_IS_PERMISION://获取用户权限  是否游客身份 积分墙是否显示 广告是否显示 1 是 0 否
//                MessageUtils.showImageShortToast(this,"获取用户权限");
                    //不管成功与否都设置权限
                    setPermisionPreference(loginDao.getUserInfo());
                    //跳转到下一页面
                    goToNextActivity("toHome");
                    break;
            }

        }catch (Exception e){
            //跳转到下一页面
            goToNextActivity("toLogin");
        }
    }

    /**
     * 请求失败
     *
     * @param requestCode  请求链接 code
     * @param errorNo      请求网络失败 code 如404等
     * @param errorMessage 请求网络错误信息
     */
    @Override
    public void onRequestFaild(int requestCode, String errorNo, String errorMessage) {
        switch (requestCode) {
            case CodeConst.LOGIN_IS_PERMISION://获取用户权限  是否游客身份 积分墙是否显示 广告是否显示 1 是 0 否
                //不管成功与否都设置权限
                setPermisionPreference(loginDao.getUserInfo());

                //跳转到下一页面
                goToNextActivity("toLogin");
                break;
            case CodeConst.LOGIN_VALIDATE_LOGIN://登录失败
//                //不管成功与否都设置权限
//                setPermisionPreference(loginDao.getUserInfo());

                //跳转到下一页面
                goToNextActivity("toLogin");
                break;
        }
    }


    /**
     * 无网络处理
     */
    @Override
    public void onNoConnect() {
        toLoginPage();
//        MessageUtils.showImageShortToast(this, "无网络连接");
    }


    /**
     * 存储用户信息到本地到本地
     */
    public void setUserPreference(UserInfo user) {
        user.setAccount(Arad.preferences.getString(LocalMark.USER_ACCOUNT.getName()));
        user.setPassword(Arad.preferences.getString(LocalMark.USER_PWD.getName()));
        UserPreference.setUserPreference(user);
    }

    /**
     * 存储用户权限到本地到本地
     */
    private void setPermisionPreference(UserInfo user) {
        UserPreference.setPermisionPreference(user);
    }




    protected void onResume() {
        super.onResume();
        JPushInterface.onResume(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        JPushInterface.onPause(this);
    }

    private void  goToNextActivity(String toLogin){
        //是否显示开屏广告和 banner 广告,不显示直接登录
        Boolean isDisplayAds = Arad.preferences.getBoolean(LocalMark.IS_DISPLAY_ADS.getName(), false);
        Boolean isAutoLogin = Arad.preferences.getBoolean(LocalMark.IS_AUTO_LOGIN.getName(),false);
        Log.d(" 是否显示开屏广告: "+isDisplayAds);
//        展示开屏广告
        if (isDisplayAds) {
            IntentUtil.intentSlidIn(this, AdsActivity.class, 00,new BasicNameValuePair("toPage",toLogin));
            noAnimfinish();
        }
        else if(isAutoLogin){
            IntentUtil.intentSlidIn(this,HomeActivity.class,00);
            noAnimfinish();
        }
        else {
            IntentUtil.intentSlidIn(this,LoginActivity.class,00);
            noAnimfinish();
        }
    }


    //去登陆
    private void toLoginPage(){
        IntentUtil.intentSlidIn(this,LoginActivity.class,00);
        noAnimfinish();
    }
}
